﻿/***
  \brief  Общие типы с GUI, Имеет дубликат на delphi
*/


#pragma once





// type






  //----------------------------------------------------------------------------

  //! тип подготовки нового юзера при содздании
  enum TNewUserTypeEnum
  {
        UNDEFINED = 0,

        NUT_NOOB,
        NUT_BELLOW,
        NUT_HI,

        __UNUSED_FORCE32 = 0xff000000

  };  typedef TNewUserTypeEnum*   PNewUserTypeEnum ;


// ------------------------------------------- 33 ----------------------------------------  
  
//! Вызов окна диалога создания нового пользователя
typedef bool (__stdcall *TFunc_CallFromDll_DialogNewUserExecute )(const char* startUserName,  char* dest, PNewUserTypeEnum nute );

/*! Вызов окна диалога выбора пользоваетля. 
     Первый параметр - пользовтели , через \n. 
	 Возвращает индекс выбранного пользователя 
	      или минус 1 если не выбран,
		  Если в левых двух байтах (1) то выбрана команда удаления пользователя
		  Если в левых двух байтах (2) то выбрана команда создания нового пользователя */
typedef int (__stdcall *TFunc_CallFromDll_DialogSelectUser)(const char* users);

//! Назначить надписи элементам окна "угадать слово". ! парметр - слово, которое требуется угадать. 2 - слова, через \n
typedef void (__stdcall *TFunc_CallFromDll_ApplyFormGuessWordCaptions)(const char* srcword, const char* items);

//---------------------------------------------------------------------------

//! данные для инициализации ядра длл
struct TCoreInitData
{
	
	int reserved;

};  typedef  TCoreInitData*  PCoreInitData;

//---------------------------------------------------------------------------

typedef bool (__stdcall *TFunc_CallFromDll_FormAddNewWordExecute ) (const char* windowCaption, char* pInpOutpEngWord, char* pInpOutpRussians );  

//---------------------------------------------------------------------------

typedef int  (__stdcall *TFunc_CallFromDll_FormDialogDictionaryExecute) ();

//----------------------------------------------------------------

typedef int  (__stdcall *TFunc_CallFromDll_DoMessage) (const char* caption, const char* text, int flags);

//! \brief обратные вызовы для обращения к exe-функциям из dll
struct TGuiCallbackData
{
	//! \brief функция показа диалога создания нового пользователя
	TFunc_CallFromDll_DialogNewUserExecute           func_CallFromDll_DialogNewUserExecute;
	//! \brief  Показ диалога выбора пользователя
	TFunc_CallFromDll_DialogSelectUser               func_CallFromDll_DialogSelectUser;
	//! \brief показать окно окна "угадать слово".	
	TFunc_CallFromDll_ApplyFormGuessWordCaptions     func_CallFromDll_ApplyFormGuessWordCaptions;
	//! \brief показать окно добавления нового слова в словарь	
	TFunc_CallFromDll_FormAddNewWordExecute          func_CallFromDll_FormAddNewWordExecute;
	//! \brief показать окно словаря	
	TFunc_CallFromDll_FormDialogDictionaryExecute    func_CallFromDll_FormDialogDictionaryExecute;
	//! \brief вызвать окно сообщения	
	TFunc_CallFromDll_DoMessage                      func_CallFromDll_DoMessage;

	
	int reserved;


}; typedef TGuiCallbackData*  PGuiCallbackData;

//---------------------------------------------------------------------------

//!  \brief Режим главного окна
enum TMainWindowMode 
{
	LM_GUESS_10WORDS_FROM1, ///<  угадывание слова из возможных десяти
	LM_WRITE_WORD ///< Написать слово по его переводу и произношению
	
	
	
	
	
};  typedef TMainWindowMode*  PLearnMode;



//-------------------------------------------------------------------------------



//!  \brief  Данные для передачи в ядро. СОбытие GUI
struct TGuiEventNotifyInfo
{
	void* pApplication; ///<  экземпляр приложения класса TAPPlication

	void* formOwner; ///< экземпляр TForm, которому принадлежит компонент
	void* sender; ///<   TObject отправитель

	int tag; ///< его таг

	int param1; ///< параметр. Значение в зависимости от ситуации
	int param2; ///< параметр. Значение в зависимости от ситуации
	int param3; ///< параметр. Значение в зависимости от ситуации
	int param4; ///< параметр. Значение в зависимости от ситуации


};	typedef  TGuiEventNotifyInfo*    PGuiEventNotifyInfo;








// end file